module PaginatorHelper

  # Geeft een lijst van alle pagina's
  def paginator_pages(paginator)
    s = '<div class="paginator_pages">Pagina\'s: '


    if paginator.page > 0
      s += link_to 'Vorige', paginator.to_hash.merge(:page => paginator.page-1)
      s += ' '
    end
    
    (0...paginator.count_pages).each do |i|

      s += ', ' unless i == 0

      if paginator.page == i
        s += '<strong>' + (i+1).to_s + '</strong>'
      else
        s += link_to(i+1, paginator.to_hash.merge(:page => i))
      end
    end

    if paginator.page < paginator.count_pages-1
      s += ' '
      s += link_to 'Volgende', paginator.to_hash.merge(:page => paginator.page+1)
    end

    s + '</div>'
  end


  # Sorteer op de gegeven kolom.
  def paginator_column(text, column, paginator)


    if paginator.sort_column.to_s == column.to_s
      img = image_tag paginator.sort_direction + '.gif'
    else
      img = ''
    end

    if paginator.sort_column.to_s == column.to_s and paginator.sort_direction == 'asc'
      options = {:sort_direction => 'desc', :sort_column => column}
    else
      options = {:sort_direction => 'asc', :sort_column => column}
    end

    img + ' ' + link_to( text, paginator.to_hash.merge( options ) )
  end
  
  #rekent voor de admin uit aan de hand van de resultaten of de pagina moet worden afgekapt en er een volgende en vorige pagina getoont moet worden
  def get_indices(page,size,products_size)
    index_next = (page+1)*size
    index_previous = (page-1)*size
    if(index_next >= products_size) then
      return [page-1]
    end
    return [page-1,page+1]
  end
  
  #geeft het resultaat van een lijst terug aan de hand van op welke pagina de gebruiker zich bevind
  def get_shortened_list(object,page)
    size = 10
    index = size*page
    object_size = object.size
    indices = get_indices(page,size,object_size)
    shortened_object = object[index..((index+size)-1)]
    hash_list = {:object => shortened_object, :indices => indices}
    return hash_list
  end
end
